This application relates in general to software development and debugging. In particular, the invention relates to the testing of source code and extraction of benchmark kernels.
With the advances of microprocessor speed, external disk size and internal memory size, workstations and personal computers are ever more capable of executing ever more intelligent programs at speeds acceptable to the user. Among the costs of the increased intelligence, however, are increased source code size and complexity as well as the concomitant increased development time.
Part of the development time for complex programs is the repeated execution of large amounts of code to set up the conditions to be tested. While a single or few executions of a large program are unremarkable, the numerous executions of a large program for test and debugging purposes are a significant part of the development budget for the program.
Accordingly, there is a need for a suite of development tools that can decrease the development time for large, complex software programs.
A particular example of this is a software developer, who while working on a large system discovers that a small region of code is responsible for a substantial amount of the run time of the large system.
There is a need for development tools that allow the developer to extract the small region for tuning purposes. It is important that the aspects of the environment responsible for the extended execution time be preserved in the extracted region to be tuned. Performance of the extracted region should be a good predictor of the performance of the replaced region in the large system.
Another issue concerns the development of compilers and interpreters for programming languages, which are tested and debugged using program kernels of interest. These program kernels are often extracted by means of a time-consuming process of manually extracting the region of interest form the rest of the program.
There is a need for tools that can help automate the extraction of such kernels.
Also, suppose a software developer working on a large system encounters a problem with base system software, for example, the compiler or run-time libraries. If the developer localizes the problem, he may want to report the problem to the base system developers without giving the base system developers access to the entirety of his own large system.
There are at least two reasons for this. First, the developer may not want to give the base system developers access to proprietary information within the large system. Second, the base system developers usually will have an easier time resolving the problem if they can work with a small, self-contained test case rather than the entirety of the large system.
According there is a need for an software program suite that extracts program regions and their environments close enough to that of the region in situ that problems from the original region in situ are captured in the extracted environment.
These and other goals of the invention will be readily apparent to one of ordinary skill in the art on the reading of the background above and the description below.